﻿using Dapper;
using Estsh.Core.Base;
using Estsh.Core.Dapper;
using Estsh.Core.Wms.IRepositories;
using Estsh.Core.Model.Result;
using Estsh.Core.Repositories;
using System.Collections;
using System.Data;
using System.Text;
using System.Security.Cryptography;
using System.Text.Json;
using Estsh.Core.Models;
using Newtonsoft.Json.Linq;
using static Estsh.Core.Model.EnumUtil.WmsEnumUtil;
using Estsh.Core.Model.Extend.Models;

namespace Estsh.Core.Wms.IRepositories
{
    public interface IInpdlineRepository : IBaseRepository<BaseEntity>
    {

        public List<WmsMoveHeader> CheckMoveHeader(string onLine);
        public List<WmsMoveHeader> CheckOnlineMoveHeader(string onLine,string cartonno);

        public List<WmsMoveDetail_Extend> CheckMoveDetail(string orderNo,int status);

        public SysStock GetCartonInfo(string cartonNo);

        public List<WmsMoveSn> GetMoveSN(string order_no);

        public List<SysStock> GetPartByFIFO(string part_id);

        public string UpdteStatus(List<WmsMoveDetail_Extend> detail, SysStock Stock, string loginId);

        public string BatchingCompleted(string loginId, string orderNo);


        public List<SysLocate> GetLocateInfo(string locate_name);

        public List<WmsMoveDetail> CheckMoveDetail2(string orderNo, int status);

        public List<SysStock> GetLocateCapacity(string locate_id);
         
        public List<SysStock> GetMaterialInfo(string cartonNo);

        public List<SysStock> CheckMaterialSplit(List<SysStock> oldStock, int splitNum, string loginId, int splitCount);

        public string UpdteStatusOnLine(string loginId, string orderNo, SysStock Stock, List<SysLocate> locate);




        public List<WmsPullingOrder> GetPullingOrderList(string Line, string MaterialType);

        public List<WmsPullingOrderDetail> GetPullingOrderDetails(string orderNo);

        public List<WmsRack> GetRkInfos(string RKNo);

        public List<SysStock> GetRackPackage(string RKNo);

        public List<SysStock> GetCartonInfoByRK(string cartonNo);

        public string UpdatePullingOrderDetails(List<WmsPullingOrderDetail> detail, string loginId);

        public string checkCartonNo(string carton, int splitCount);

        public string UpdateLargePick(List<string> sqlStrings, List<DynamicParameters> parameterList);


        public List<SysPdline> GetPdline(string orderNo);

        public string SetMoveOrderClose(string orderNo);

        public SysStock GetStockCartonInfo(string cartonNo);

        public List<WmsRackPackage_Extend> GetRackPackageInfo(string rackNo);

        public List<SysStock> CheckPickMaterialSplit(WmsRackPackage_Extend rackPackageInfo, string destRackNo, string locateId, string locateCode, string rackNo, List<WmsMoveDetail_Extend> detInfo, List<SysStock> oldStock, int splitNum, string loginId, int splitCount);
   
        public string UpdteInpslineStatus(string orderNo, WmsRackPackage_Extend rackPackageInfo, List<WmsMoveDetail_Extend> detail, SysStock Stock, string loginId,string destRackNo,string SplitQty,string rackOrCartNo);

        public WmsRackPackage_Extend GetRackPackageInfo2(string cartonNo);

        public string CheckFullBoxPicking(List<WmsMoveDetail_Extend> detailInfo, List<WmsRackPackage_Extend> rackPackageInfo, string loginId);

        public WmsMoveHeader_Extend GetMoveHeaderInfo(string orderno);

        public SysLocate GetLocateZTbin();

        public string UpdteOnlineStatus(List<WmsRackPackage_Extend> rackPackageInfo, List<WmsMoveDetail_Extend> detailInfo, List<WmsMoveSn> moveSnlist,string orderNo,int LocateId, string LocateName, string cartonNo, string loginId);

        public List<WmsMoveSn> GetMoveSnList(string orderNo);
    }
}
